/**
 * 给定数组nums和数字target，在数组中找到两个数的和为target并返回这两个数在数组中的index
 * example: nums=[2,7,11,15], target=9 => return [0,1]
 * @param {*} nums 
 * @param {*} target 
 * @returns 
 */
var twoSum = function (nums, target) {
    // map具有key-value的映射关系
    const map = new Map()
    for (let i = 0; i < nums.length; i++) {
        // 计算哪个数字能和当前数字相加得到target
        const element = target - nums[i];

        // 检查map里有没有这个数
        if (map.has(element)) {
            // 有则返回
            return [map.get(element), i]
        } else {
            // 无则把nums[i]当作key加入map
            map.set(nums[i], i)
        }
    }
    // 没查到返回空
    return []
}